header%20ipynb.png

Daftar Isi:

Skenario Pemodelan

Pembagian Data
  1. Train-Validation Split
  2. K-Fold Cross Validation

Skenario Pemodelan

Dataset


Dataset yang digunakan dalam Notebook ini adalah dataset Iris (https://archive.ics.uci.edu/ml/datasets/iris) yang disediakan dalam pustaka Sklearn. Dataset dapat di-import dengan potongan kode di bawah:

In [1]:
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data  # we only take the first two features.
y = iris.target

Dataset Iris terdiri dari 3 kelas (Iris Setosa, Iris Versicolour, Iris Virginica) dengan banyak data sejumlah 150. Atribut / Fitur dari dataset terdiri dari sepal length dalam cm, sepal width dalam cm, petal length dalam cm, dan petal width dalam cm.

In [2]:
print("Banyak data: ", len(X))
Banyak data:  150
In [3]:
print("10 data pertama: ")
print(X[:10])
10 data pertama: 
[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]
 [5.4 3.9 1.7 0.4]
 [4.6 3.4 1.4 0.3]
 [5.  3.4 1.5 0.2]
 [4.4 2.9 1.4 0.2]
 [4.9 3.1 1.5 0.1]]
In [4]:
print("10 label pertama: ")
print(y[:10])
10 label pertama: 
[0 0 0 0 0 0 0 0 0 0]

Pembagian Data


1. Train-Validation Split


Train-Validation split dapat dilakukan dengan menjalankan potongan kode di bawah. Persentase pembagian data training dan data validasi dapat ditentukan dengan mengubah nilai parameter train_size.

In [5]:
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.7)
In [6]:
print("Banyak data latih setelah dilakukan Train-Validation Split: ", len(X_train))
print("Banyak data uji setelah dilakukan Train-Validation Split: ", len(X_test))
Banyak data latih setelah dilakukan Train-Validation Split:  105
Banyak data uji setelah dilakukan Train-Validation Split:  45

2. K-Fold Cross Validation


Pustaka Scikit-learn menyediakan wrapper untuk melakukan K-Fold Cross Validation, yaitu dengan meng-import cross_val_score. cross_val_score menerima input berupa model machine learning, data training, label training, dan nilai K. Output yang dikeluarkan akan berupa list berisi akurasi setiap fold, sehingga untuk mendapatkan nilai rata-rata akurasi dari setiap foldnya, dapat menggunakan built-in function mean().

In [7]:
from sklearn.model_selection import cross_val_score
from sklearn.svm import SVC

model = SVC(kernel = 'linear', C = 1)
scores = cross_val_score(model, X, y, cv = 5)
print("Akurasi model SVM untuk tiap fold: ", scores)
print("Akurasi model SVM dengan 5-Fold Cross Validation: ", scores.mean())
Akurasi model SVM untuk tiap fold:  [0.96666667 1.         0.96666667 0.96666667 1.        ]
Akurasi model SVM dengan 5-Fold Cross Validation:  0.9800000000000001